<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <div class="div div2 div3"></div>
    <script>
        // 第1题
        // 封装三个函数，完成几个 DOM 元素类名操作的工具方法：
        // addClass(dom, name) ：给 dom 元素添加类名 name
        var div = document.getElementsByTagName("div")[0]
        function addClass(dom, name) {
            // 代码优化
            hasClass(dom, name) ? '' : dom.className += " " + name
        }
        // removeClass(dom, name) ：把 dom 元素的类名 name 删除
        function removeClass(dom, name) {
            // 代码优化
            hasClass(dom, name) ? dom.className = dom.className.slice(0, dom.className.indexOf(name)) + dom.className.slice(dom.className.indexOf(name) + name.length) : ""
        }
        // hasClass(dom, name) ：判断 dom 元素是否有类名 name
        function hasClass(dom, name) {
            // 代码优化
            return dom.className.indexOf(name) !== -1
        }
        addClass(div, "div6")

        // // 第2题
        // // 封装一个函数可以使得2维数组转换为1维数组并输出这个1维数组
        // 代码优化
        function fn(arr) {
            var newArr = []
            arr.forEach(function (item) {
                newArr = newArr.concat(item)
            })
            return newArr
        }
        console.log(fn([1, [1, 2, 3], [4, 5, 6]]))



        // // console.log(fn([[1, 2, 3], [4, 5, 6]]))
        // // // 第3题

        // // 实现一个评星方法 说明
        // // 可根据传入的评分和总数，返回评星结果（用 ★ 和 ☆ 描述）
        // // 评分必选项，四舍五入，总数可选，大于0的整数，默认为5
        // // 对于评分为空或小于0、评分大于总数、总数小于0或总数非整数的情况，返回'errror' 示例
        // // getRate(4); // ★★★★☆
        // // getRate(4, 8); // ★★★★☆☆☆☆
        // // getRate(3.4); //  ★★★☆☆
        // // getRate(5, 2); // 'error'
        // // getRate(-2); // 'error'
        // // getRate(3, 5.5); // 'error'


        // function getRate(num1, num2) {
        //     num2 = num2 || 5
        //     num1 = Math.round(num1)
        //     if (num2 < num1 || num2 == undefined || num2 < 0 || String(num2).indexOf(".") != -1 || num1 < 0)
        //         return "error"
        //     var html = ""
        //     for (var i = 1; i <= num2; i++)
        //         html += i < num1 ? "★" : "☆"
        //     return html
        // }
        // console.log(getRate(3))
    </script>
</body>

</html>